home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 23
/
AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso
/
Updates
/
Librarys
/
zee_ini_library
/
Sources
/
C
/
Bin2H
/
Bin2H.s
< prev
next >
Wrap
Text File
|
1999-08-05
|
9KB
|
601 lines
; Storm C Compiler
; Work:Sources/C/Bin2H/Bin2H.c
XREF _exit
XREF _ftell
XREF _fseek
XREF _fread
XREF _fprintf
XREF _printf
XREF _ferror
XREF _fclose
XREF _fopen
XREF _fputs
XREF _std__in
XREF _std__out
XREF _std__err
SECTION ":0",CODE
;int StrCmpNC(char *string1, char *string2)
XDEF _StrCmpNC
_StrCmpNC
L55 EQU -2
link a5,#L55
movem.l d2/a2,-(a7)
move.l $C(a5),a0
move.l $8(a5),a1
L41
;
L42
;
; c1 = (((c1 = *string1++) >= 'a' && c1 <= 'z') ? c1 - ' ' : c
move.b (a1)+,d1
cmp.b #$61,d1
blo.b L45
L43
cmp.b #$7A,d1
bhi.b L45
L44
moveq #0,d0
move.b d1,d0
sub.l #$20,d0
bra.b L46
L45
moveq #0,d0
move.b d1,d0
L46
move.b d0,d1
; c2 = (((c2 = *string2++) >= 'a' && c2 <= 'z') ? c2 - ' ' : c
move.b (a0)+,d0
cmp.b #$61,d0
blo.b L49
L47
cmp.b #$7A,d0
bhi.b L49
L48
and.l #$FF,d0
sub.l #$20,d0
bra.b L50
L49
and.l #$FF,d0
L50
; if (c1 != c2)
cmp.b d0,d1
beq.b L52
L51
; return(-1);
moveq #-1,d0
movem.l (a7)+,d2/a2
unlk a5
rts
L52
tst.b d1
beq.b L54
L53
tst.b d0
bne.b L42
L54
; return(0);
moveq #0,d0
movem.l (a7)+,d2/a2
unlk a5
rts
;int ConvertBinary()
XDEF _ConvertBinary
_ConvertBinary
L75 EQU -$1C
link a5,#L75
movem.l d2-d4,-(a7)
L60
; unsigned long rpos = 0;
moveq #0,d4
; while (rlen = fread(Buffer,1,LINESIZE,infile))
bra L73
L61
;
; if (ferror(infile))
move.l _infile(a4),-(a7)
bsr _ferror
addq.w #4,a7
tst.l d0
beq.b L63
L62
; if (ferror(infile)) return CONV_ERROR_RE
moveq #1,d0
movem.l (a7)+,d2-d4
unlk a5
rts
L63
; fputs("\n\t",outfile);
move.l _outfile(a4),-(a7)
move.l #L56,-(a7)
bsr _fputs
addq.w #$8,a7
; for (i = 0;
moveq #0,d2
bra.b L70
L64
;
; rpos++;
addq.l #1,d4
; fprintf(outfile,"0x%02x",*(Buffer+i));
lea -$10(a5),a0
moveq #0,d0
move.b 0(a0,d2.l),d0
move.l d0,-(a7)
move.l #L57,-(a7)
move.l _outfile(a4),-(a7)
bsr _fprintf
add.w #$C,a7
; if ((rpos != len) || i != rlen-1)
cmp.l _len(a4),d4
bne.b L66
L65
move.l d3,d0
subq.l #1,d0
cmp.l d0,d2
beq.b L67
L66
; fputs(",",outfile);
move.l _outfile(a4),-(a7)
move.l #L58,-(a7)
bsr _fputs
addq.w #$8,a7
L67
; if (i != rlen-1)
move.l d3,d0
subq.l #1,d0
cmp.l d0,d2
beq.b L69
L68
; if (i != rlen-1) fputs(" ",outfile);
move.l _outfile(a4),-(a7)
move.l #L59,-(a7)
bsr _fputs
addq.w #$8,a7
L69
addq.l #1,d2
L70
cmp.l d3,d2
blo.b L64
L71
; if (ferror(outfile))
move.l _outfile(a4),-(a7)
bsr _ferror
addq.w #4,a7
tst.l d0
beq.b L73
L72
; if (ferror(outfile)) return CONV_ERROR_
moveq #2,d0
movem.l (a7)+,d2-d4
unlk a5
rts
L73
move.l _infile(a4),-(a7)
pea $10.w
pea 1.w
pea -$10(a5)
bsr _fread
add.w #$10,a7
move.l d0,d3
bne L61
L74
; return(0);
moveq #0,d0
movem.l (a7)+,d2-d4
unlk a5
rts
;int ConvertASCII()
XDEF _ConvertASCII
_ConvertASCII
L96 EQU -$1E
link a5,#L96
movem.l d2-d4,-(a7)
L77
; unsigned long rpos = 0;
moveq #0,d4
; while (rlen = fread(Buffer,1,LINESIZE,infile))
bra L94
L78
;
; if (ferror(infile))
move.l _infile(a4),-(a7)
bsr _ferror
addq.w #4,a7
tst.l d0
beq.b L80
L79
; if (ferror(infile)) return CONV_ERROR_RE
moveq #1,d0
movem.l (a7)+,d2-d4
unlk a5
rts
L80
; fputs("\n\t",outfile);
move.l _outfile(a4),-(a7)
move.l #L56,-(a7)
bsr _fputs
addq.w #$8,a7
; for (i = 0;
moveq #0,d2
bra L91
L81
;
; rpos++;
addq.l #1,d4
; cbyte = Buffer[i];
lea -$10(a5),a0
move.b 0(a0,d2.l),d0
; if ((cbyte > 31) && (cbyte < 128))
cmp.b #$1F,d0
bls.b L84
L82
cmp.b #$80,d0
bhs.b L84
L83
; fprintf(outfile,"'%c'",cbyte);
and.l #$FF,d0
move.l d0,-(a7)
move.l #L76,-(a7)
move.l _outfile(a4),-(a7)
bsr _fprintf
add.w #$C,a7
bra.b L85
L84
; fprintf(outfile,"0x%02x",cbyte);
and.l #$FF,d0
move.l d0,-(a7)
move.l #L57,-(a7)
move.l _outfile(a4),-(a7)
bsr _fprintf
add.w #$C,a7
L85
; if ((rpos != len) || i != rlen-1)
cmp.l _len(a4),d4
bne.b L87
L86
move.l d3,d0
subq.l #1,d0
cmp.l d0,d2
beq.b L88
L87
; fputs(",",outfile);
move.l _outfile(a4),-(a7)
move.l #L58,-(a7)
bsr _fputs
addq.w #$8,a7
L88
; if (i != rlen-1)
move.l d3,d0
subq.l #1,d0
cmp.l d0,d2
beq.b L90
L89
; if (i != rlen-1) fputs(" ",outfile);
move.l _outfile(a4),-(a7)
move.l #L59,-(a7)
bsr _fputs
addq.w #$8,a7
L90
addq.l #1,d2
L91
cmp.l d3,d2
blo L81
L92
; if (ferror(outfile))
move.l _outfile(a4),-(a7)
bsr _ferror
addq.w #4,a7
tst.l d0
beq.b L94
L93
; if (ferror(outfile)) return CONV_ERROR_
moveq #2,d0
movem.l (a7)+,d2-d4
unlk a5
rts
L94
move.l _infile(a4),-(a7)
pea $10.w
pea 1.w
pea -$10(a5)
bsr _fread
add.w #$10,a7
move.l d0,d3
bne L78
L95
; return(0);
moveq #0,d0
movem.l (a7)+,d2-d4
unlk a5
rts
;int main(int argc,char **argv)
XDEF _main
_main
L137 EQU -6
link a5,#L137
movem.l d2-d4/a2,-(a7)
movem.l $8(a5),d3/a2
L110
; char Mode = BINARY;
moveq #0,d4
; int conv = 0;
moveq #0,d2
; printf("Bin2H v%d.%02d (c) 1999 by Basty/Seasons (%s, %s).\n\n",
move.l #L97,-(a7)
move.l #L98,-(a7)
clr.l -(a7)
pea 1.w
move.l #L99,-(a7)
bsr _printf
add.w #$14,a7
; if (argc != 3 && argc != 4)
cmp.l #3,d3
beq.b L113
L111
cmp.l #4,d3
beq.b L113
L112
; if (argc != 3 && argc != 4) goto
bra L132
L113
; if (argc == 4)
cmp.l #4,d3
bne.b L117
L114
;
; if (StrCmpNC(argv[3],"ASCII"))
move.l #L100,-(a7)
move.l $C(a2),-(a7)
bsr _StrCmpNC
addq.w #$8,a7
tst.l d0
beq.b L116
L115
; if (StrCmpNC(argv[3],"ASCII"))
bra L132
L116
; Mode = ASCII;
moveq #1,d4
L117
; if (!(infile = fopen(argv[1],"rb")))
move.l #L101,-(a7)
move.l 4(a2),-(a7)
bsr _fopen
addq.w #$8,a7
move.l d0,_infile(a4)
tst.l _infile(a4)
bne.b L119
L118
; if (!(infile = fopen(argv[1
bra L133
L119
; fseek(infile,0,SEEK_END);
pea 1.w
clr.l -(a7)
move.l _infile(a4),-(a7)
bsr _fseek
add.w #$C,a7
; len = ftell(infile);
move.l _infile(a4),-(a7)
bsr _ftell
addq.w #4,a7
move.l d0,_len(a4)
; fseek(infile,0,SEEK_SET);
move.l #-1,-(a7)
clr.l -(a7)
move.l _infile(a4),-(a7)
bsr _fseek
add.w #$C,a7
; if (ferror(infile))
move.l _infile(a4),-(a7)
bsr _ferror
addq.w #4,a7
tst.l d0
beq.b L121
L120
; if (ferror(infile)) goto
bra L133
L121
; if (!(outfile = fopen(argv[2],"w")))
move.l #L102,-(a7)
move.l $8(a2),-(a7)
bsr _fopen
addq.w #$8,a7
move.l d0,_outfile(a4)
tst.l _outfile(a4)
bne.b L123
L122
; if (!(outfile = fopen(argv[
bra L134
L123
; fprintf(outfile,"/* Converted with binary to C-include. (c)
move.l _len(a4),-(a7)
move.l 4(a2),-(a7)
move.l #L103,-(a7)
move.l _outfile(a4),-(a7)
bsr _fprintf
add.w #$10,a7
; switch (Mode)
cmp.b #0,d4
beq.b L124
cmp.b #1,d4
beq.b L125
bra.b L126
;
;
L124
;
; conv = ConvertBinary();
bsr _ConvertBinary
move.l d0,d2
;
bra.b L126
L125
;
; conv = ConvertASCII();
bsr _ConvertASCII
move.l d0,d2
;
L126
; if (conv == CONV_OKAY)
tst.l d2
bne.b L128
L127
; if (conv == CONV_OKAY) fputs("\n};\n",out
move.l _outfile(a4),-(a7)
move.l #L104,-(a7)
bsr _fputs
addq.w #$8,a7
L128
; fclose(outfile);
move.l _outfile(a4),-(a7)
bsr _fclose
addq.w #4,a7
; fclose(infile);
move.l _infile(a4),-(a7)
bsr _fclose
addq.w #4,a7
; switch (conv)
cmp.l #1,d2
beq L135
cmp.l #2,d2
beq L136
bra.b L131
;
;
L129
; goto
bra L135
L130
; goto
bra L136
L131
; exit(0);
clr.l -(a7)
bsr _exit
addq.w #4,a7
L132
; printf("Invalid parameters !\n\nUsage is: %s <infile> <outfile>
move.l (a2),-(a7)
move.l #L105,-(a7)
bsr _printf
addq.w #$8,a7
; exit(20);
pea $14.w
bsr _exit
addq.w #4,a7
L133
; printf("%s: Couldn't open %s.\nProgram terminated !\n",argv[0],a
move.l 4(a2),-(a7)
move.l (a2),-(a7)
move.l #L106,-(a7)
bsr _printf
add.w #$C,a7
; exit(10);
pea $A.w
bsr _exit
addq.w #4,a7
L134
; fclose(infile);
move.l _infile(a4),-(a7)
bsr _fclose
addq.w #4,a7
; printf("%s: Couldn't create %s.\nProgram terminated !\n",argv[0]
move.l $8(a2),-(a7)
move.l (a2),-(a7)
move.l #L107,-(a7)
bsr _printf
add.w #$C,a7
; exit(10);
pea $A.w
bsr _exit
addq.w #4,a7
L135
; printf("%s: Couldn't read in %s.\nProgram terminated !\n",argv[0
move.l 4(a2),-(a7)
move.l (a2),-(a7)
move.l #L108,-(a7)
bsr _printf
add.w #$C,a7
; exit(10);